package com.dcloud.core.client;


import com.dcloud.core.source.ISource;
import com.dcloud.core.source.RdbmsSource;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

/**
 * @Description //客户端接口
 * @Author shijf
 * @Date 17:12 2022/7/6
 */
public interface IClient<T> {
    /**
     * 获取 连接
     *
     * @param source 数据源信息
     * @return
     * @throws Exception
     */
    Connection getCon(ISource source);

    /**
     * 获取 连接
     *
     * @param source 数据源信息
     * @param taskParams 任务环境变量
     *
     * @return
     * @throws Exception
     */
    Connection getCon(ISource source, String taskParams);

    /**
     * 校验 连接
     *
     * @param source
     * @return
     * @throws Exception
     */
    Boolean testCon(ISource source);

    List<T> execQuery(ISource defineSource, String taskSql);

    Long execQueryCount(ISource defineSource, String taskSql);

    List<Map<String,Object>> execQueryWithLimit(ISource defineSource, String taskSql,Long offset,Long rows);


    List<Map<String,Object>> getAllTable(RdbmsSource defineSource);

    Boolean createTable(ISource defineSource,String createTableSql);

}
